/*
 * PhaseBuilder.h
 *
 *  Created on: 14 Jul 2011
 *      Author: al2010
 */

#ifndef PHASEBUILDER_H_
#define PHASEBUILDER_H_

// GeoReact includes
#include "Utils.h"

// GeoReact forward declarations
class Phase;
class PhaseSystem;

namespace PhaseBuilder 
{
	const PhaseSystem
	CreatePhaseSystem(const vector<string>& allSpecies);
	
	const vector<Phase>
	GeneratePhases(const vector<string>& allSpecies);
	
	const vector<string>
	GenerateSpecies(const vector<string>& knownSpecies);
	
	const vector<string>
	GenerateSpeciesConsiderOnlySecondaryAqueous(const vector<string>& knownSpecies);
	
	const vector<string>
	GenerateBasisSpecies(const vector<string>& knownSpecies);
	
	const vector<string>
	GenerateSecondarySpecies(const vector<string>& knownSpecies);
	
	const vector<string>
	FilterSpecies(const vector<string>& species, const vector<string>& tags);
	
	const vector<string>
	RemoveSpecies(const vector<string>& species, const vector<string>& tags);
};

#endif /* PHASEBUILDER_H_ */
